package com.lzh.shijicloudstack.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lzh.shijicloudstack.model.dto.ingredient.AddIngredientDto;
import com.lzh.shijicloudstack.model.dto.ingredient.EditIngredientDto;
import com.lzh.shijicloudstack.model.dto.ingredient.IngredientPageDto;
import com.lzh.shijicloudstack.model.entity.Ingredient;
import com.lzh.shijicloudstack.model.entity.Menu;
import com.lzh.shijicloudstack.model.vo.category.CategoryVO;
import com.lzh.shijicloudstack.model.vo.ingredient.IngredientVO;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;


/**
 * 食材表服务接口
 *
 * @author luzhiheng
 * @since 2024-12-28 16:14:28
 */
public interface IngredientService extends IService<Ingredient> {

    /**
     * 分页查询
     *
     * @param dto 参数
     * @return Map<String, Object>
     */
    Map<String, Object> pageList(IngredientPageDto dto);

    /**
     * 新增食材
     *
     * @param dto 参数
     * @return Boolean
     */
    Boolean add(AddIngredientDto dto);

    /**
     * 编辑食材
     *
     * @param dto 参数
     * @return Boolean
     */
    Boolean edit(EditIngredientDto dto);

    /**
     * 详情
     *
     * @param id 主键
     * @return IngredientVO
     */
    IngredientVO findDetail(Long id);

    /**
     * 根据主键ID更新，为空字段会更新
     *
     * @param ingredient 参数
     * @return Boolean
     */
    Integer updateByIdIncludeNullField(Ingredient ingredient);

    /**
     * 查询所有食材，并附带分类
     *
     * @return List<CategoryVO>
     */
    List<CategoryVO> findIngredientWithCategory();
}

